# count = 0
#
# def func():
#     count += 1
# func()
# UnboundLocalError: local variable 'count' referenced before assignment
# 解释器认为：如果你在局部作用域对一个变量进行修改了，
# 你在局部作用域已经定义好这个变量了。

# global
# 1. 可以在局部作用域声明一个全局变量。

# 这是剪切
# def func():
#
#     global name
#     name = 1
#
#     print(globals())
#     # print(locals())
#     name += 1
#     print(globals())
#
#
# func()
# # print(name)
# print(globals())
#
# 2,可以修改全局变量。

# count = 0
#
# def func():
#     global count
#     count += 1
#
# print(count)
# func()
# print(count)



# nonlocal  了解
# 这是复制
# nonlocal不能操作全局变量。
# nonlocal可以对父级作用域的变量进行修改，并且在当前作用域创建（复制）一份此变量。
# def func():
#     count = 0
#     def inner():
#         nonlocal count
#         count += 1
#         print(count)
#         print(locals())
#     inner()
#     print(locals())
# func()
# UnboundLocalError: local variable 'count' referenced before assignment
# 解释器认为：如果你在局部作用域对一个变量进行修改了，
# 你在局部作用域已经定义好这个变量了。